home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / qzapsrc / !QZap_c_QWriteoutp < prev    next >
Encoding:
Text File  |  1994-11-02  |  2.1 KB  |  82 lines

  1. /*
  2.  * Writeoutput.c
  3.  */
  4.  
  5. #define QWriteoutput
  6.  
  7. #include "QMain.h"
  8. #include "QWriteoutput.h"
  9. #include "QDataload.h"
  10. #include "QDisassemble.h"
  11.  
  12. #include "hourglass.h"
  13. #include "osfile.h"
  14. #include "osfind.h"
  15. #include "osgbpb.h"
  16.  
  17. /*
  18.  * Selection is given by Selectionstart Selectionend, lword offsets
  19.  * into the file Loadedfile.  Savetype is Selected or All.
  20.  */
  21.  
  22. void Writeoutput(void)
  23. {
  24.   os_f filehandle;
  25.   byte word[4];
  26.   int notread, i, j, k;
  27.   char *disassembly;
  28.   int dislength;
  29.   char address[9], hexcode[9], asciicode[4], *end;
  30.   int start, stop;
  31.  
  32.   hourglass_on();
  33.   filehandle=osfind_openout(osfind_NO_PATH,filenameptr,NULL);
  34.   if (Savetype==Selected) {
  35.     start=Selectionstart;
  36.     stop=Selectionend;
  37.   } else {
  38.     start=0;
  39.     stop=Loadedsize/4;
  40.   }
  41.   for (i=start; i<stop; i++) {
  42.     notread=osgbpb_read_at(Loadedfile,word,4,i*4);
  43.     Disassemble(*((int *)word),(int *)(Baseaddress+i*4),
  44.                 &disassembly,&dislength);
  45.     os_convert_hex8(Baseaddress+i*4,address,9,&end);
  46.     os_convert_hex8(*((int *)word),hexcode,9,&end);
  47.     for (j=0; j<4; j++) {
  48.       asciicode[j]=((word[j]>31) && (word[j]<127))?((char)word[j]):'.';
  49.     }
  50.     j=FALSE;
  51.     for (k=1; k<5; k++) {
  52.       if (k==seqinfo[0].number) {
  53.         if (j) osgbpb_write(filehandle, (byte *) " : ", 3);
  54.         osgbpb_write(filehandle, (byte *) address, 8);
  55.         j=TRUE;
  56.       }
  57.       if (k==seqinfo[1].number) {
  58.         if (j) osgbpb_write(filehandle, (byte *) " : ", 3);
  59.         osgbpb_write(filehandle, (byte *) asciicode, 4);
  60.         j=TRUE;
  61.       }
  62.       if (k==seqinfo[2].number) {
  63.         if (j) osgbpb_write(filehandle, (byte *) " : ", 3);
  64.         osgbpb_write(filehandle, (byte *) hexcode, 8);
  65.         j=TRUE;
  66.       }
  67.       if (k==seqinfo[3].number) {
  68.         if (j) osgbpb_write(filehandle, (byte *) " : ", 3);
  69.         osgbpb_write(filehandle, (byte *) disassembly, dislength);
  70.         if (dislength<50)
  71.             osgbpb_write(filehandle, (byte *) "                                                  ", 50-dislength);
  72.         j=TRUE;
  73.       }
  74.     }
  75.     osgbpb_write(filehandle, (byte *) "\012", 1);
  76.   }
  77.   osfind_close(filehandle);
  78.   osfile_set_type(filenameptr, 0xFFF);
  79.   hourglass_off();
  80. }
  81.  
  82.